package helper.base

import helper.base.StringHelper.StringTo.to010String
import helper.base.StringHelper.StringTo.to01String

object StringHelper {
    fun get01String(
        s0: String,
        s1: String,
    ): String {
        return "${s0}${s1}"
    }

    fun get010String(
        s0: String,
        s1: String,
    ): String {
        return "${s0}${s1}${s0}"
    }

    object StringTo {
        fun String.to01String(
            s1: String,
        ): String {
            return get01String(this, s1)
        }

        fun String.to010String(
            s1: String,
        ): String {
            return get010String(this, s1)
        }

        fun String.toMathFormulaString(): String {
            return "\$".to010String(this)
        }
    }

    fun titleString(
        string: String,
        number: Int,
        title: String,
    ): String {
        return string.repeat(number).to010String(title)
    }

    fun tabsString(
        tabNumber: Int,
        string: String,
    ): String {
        return "\t".repeat(tabNumber).to01String(string)
    }

    // 去除字符串中的空行
    // 使用正则表达式 [\r\n]+ 匹配字符串中的一个或多个回车符或换行符。
    // 注意，这里使用了字符类 [...] 来匹配多个字符，因为回车符和换行符可以在不同的操作系统中以不同的方式表示。
    fun String.removeEmptyLine(): String {
        return this.replace(
            "[\r\n]+".toRegex(),
            "\n"
        )
    }

    fun String.replaceMany(
        kv: LinkedHashMap<String, String>,
    ): String {
        var returnString = this
        kv.map { (k, v) ->
            returnString = returnString.replace(k, v)
        }
        return returnString
    }

    fun String.removeEmpty(): String {
        return this.replace(
            Regex("\\s+"),
            "",
        )
    }

    fun String.countPrefix4BAndString():Pair<Int,String>{
        var num = 0
        var str = this

        while (str.startsWith("    ")){
            str= str.removePrefix("    ")
            num+=1
        }

        return Pair(num,str)
    }

    @JvmStatic
    fun main(args: Array<String>) {
        var s="\t\tssss"
        val (n,str)= s.countPrefix4BAndString()
        println(n)
        println(str)
    }

}